//TODO 泛型:在定义函数,接口,类的时候不能预先确定要使用的数据的类型,而是在使用的时候才能确定数据的类型(新版就兰奇解析for循环时出现问题)
/*TODO
*  需求:定义一个函数,传入两个参数,第一个参数是数据,第二个参数是数量,函数的作用:根据数量产生对应个数的数据,存放在一个数组中*/
(()=>{
 /*
//定义一个函数
    function getArr1(value:number,count:number):number[]{
//根据数据和数量产生一个数组
        const arr:number[]=[]
        for(let i=0;i<count;count++){
            arr.push(value)
        }
        return arr
    }
    console.log(getArr1(100.123,3))

    //定义一个函数,同上,只不过传入的是字符串类型的数据
    function getArr2(value:string,count:number):string[]{
        const arr:string[]=[]
        for(let i=0;i<count;count++){
            arr.push(value)
        }
        return arr
    }

    console.log(getArr2('1',2))

    //定义一个函数,同上,可传入任意类型的数据,返回值是任意类型数据的数组
    function getArr3(value:any,count:number):any[]{
        const arr:any[]=[]
        for(let i=0;i<count;count++){
            arr.push(value)
        }
        return arr
    }

    console.log(getArr3(1,2))//存储的是数字类型的数据
    console.log(getArr3('1',2))//存储的是字符串类型的数据
    //如上,使用数组中的方法,没有智能提示
    */
    console.log('-------------------------------------------------------')
    function getArr<T>(value:T,count:number):T[]{
       // const arr:T[]=[]
        const arr:Array<T>=[]
        for(let i=0;i<count;count++){
            arr.push(value)
        }
        return arr
    }
    const arr1 = getArr<number>(200.12345,5)//[200.12345,200.12345,200.12345,200.12345,200.12345]
    const arr2 = getArr<string>('123456',5)//['123456','123456','123456','123456','123456']
    console.log(arr1)
    console.log(arr2)
    console.log(arr1[0].toFixed(3))//200.123
    console.log(arr2[0].split(''))//['1','2','3','4','5','6']
   /* console.log(arr1[0].toFixed(2))
    console.log(arr2[1].split(''))*!/*/
})()
